package com.lucfzy.controller;

import com.github.pagehelper.Page;
import com.lucfzy.GoodInfo;
import com.lucfzy.GoodInfoMapper;
import com.lucfzy.employee.Employee;
import com.lucfzy.employee.EmployeeMapper;
import com.lucfzy.request.EmployeeRequest;
import com.lucfzy.resp.Response;
import io.goeasy.GoEasy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Timer;

@RestController// 该注解解决前后端跨域问题，这个注解很关键，要不然前后台无法访问。
public class QueryController {

    @Autowired
    private GoodInfoMapper goodInfoMapper;
    @Autowired
    private EmployeeMapper employeeMapper;
    private static final GoEasy goEasy;
    private final Timer timer = new Timer();

    static {
        // 这里直接初始化，为啥这样去写，你懂的。
        // 高级点就交给spring容器管理，写一个bean就行。注入进去。
        goEasy = new GoEasy( "http://rest-hangzhou.goeasy.io", "BC-13f8e3c0ebcd46199415d6885af5b088");
    }


    // 这里就一个简单的查询所有数据，你也会的。
    @GetMapping("/getSkuInfo")
    public List<GoodInfo> getSkuInfo() {
//        // 这里用jdk原生封装的框架来启用一个定时任务。
//        TimerTask timerTask = new TimerTask() {
//            @Override
//            public void run() {
//                // 周期性执行这个run方法中的内容，这个代码都是拷贝api的，简单。都一样。官方给的。
//                goEasy.publish("message_channel_12456789", JSON.toJSONString(getGoodList()));
//            }
//        };
//        // 这里启动一个定时任务，0代表立刻启动，2000代表2s运行一次代码，这个时间可以设置的更短一些都可以。毫秒单位。
//        timer.schedule(timerTask, 0, 2000);
//        return null;
        return getGoodList();
    }

    // 这里提供一个开放接口，目的是可以干掉定时任务。这样就ok了，就这么多，很简单。
    @GetMapping("closeTimer")
    public String closeTimer() {
        timer.cancel();
        return "timer canceled ok ~";
    }

    @GetMapping("test")
    public String test() {
        return "OKKKKK !!!!";
    }

    private Page<GoodInfo> getGoodList() {
        return goodInfoMapper.findAll();
    }

    @PostMapping("/checkEmployeeInfo")
    public Response getResult(@RequestBody EmployeeRequest request) {
        Page<Employee> allEmployees = employeeMapper.findAll();
        for (Employee allEmployee : allEmployees) {
            if (allEmployee.getUserName().equals(request.getUserName())
                    && allEmployee.getPassword().equals(request.getPassword())) {
                // 说明校验通过,返回成功。
                return Response.ok();
            }
        }
        return Response.error();
    }

}